import proto from '../proto/ProtoMsgV1_pb.js';

const ProtobufEncoder = {
	MAGIC_CODE: 0x86,
	VERSION_CODE: 0x01,
	
	encode: function(buffer) {
		// 二进制消息
		let protoObjBuf = buffer.serializeBinary();
		
		let length = protoObjBuf.length;
		
		// 创建一个足够大的 Uint8Array 来存储所有信息
		const outputBuffer = new Uint8Array(2 + 2 + 4 + length);
		const view = new DataView(outputBuffer.buffer);
		view.setInt16(0, this.MAGIC_CODE, false); // 设置魔术数字
		view.setInt16(2, this.VERSION_CODE, false); // 设置版本号
		view.setUint32(4, length, false); // 设置消息长度
		
		// 将序列化后的消息复制到输出缓冲区中
		outputBuffer.set(protoObjBuf, 8); // 从索引 12 开始复制（4+4+4=12）
		
		return outputBuffer;
	}
}


export default ProtobufEncoder;